﻿// 0926train02.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
#include <limits>
#include <iomanip>
#include <numeric>
#include <vector>
#include <unordered_map>
#include <unordered_set>

using namespace std;

/*
 误码率Q是最常用的数据通信传输质量指标
 它可以理解为“在多少位数据中出现一位差错”
 移动通信 网络中的误码率主要是指比特误码率，
 其计算公式如下:比特误码率=错误比特数/传输总比特数
 为了简单，我们使用字符串 来标识通信的信息，
 一个字符错误了，就认为出现了一个误码输入一个标准的字符串，
 和一个传输后的字符串，计算误码率字符串会被压缩。
例:“2A3B4D5X1Z”表示“AAABBBDDDDXXXXXXZ”
用例会保证两个输入字符串解压后长度一致，解压前的长度不一定一致每个生成后的字符串长度<100000000。

输入描述
两行，分别为两种字符串的压缩形式。
每行字符串(压缩后)的长度<100000
输出描述
一行，错误的字数量/展开后的总长度
备注
注意: 展开后的字符串不含数字

示例1:
输入
3A3B
2A4B
输出
1/6

示例2:
输入
5Y5Z
5Y5Z
输出
0/10
 */
class Solution01
{
public:
    vector<pair<char, int>>getPair(string&str)
    {
        vector<pair<char, int>>result;
        int curr_num = 0;
        int size = str.size();
        for (int i=0; i<size; i++)
        {
            if (isdigit(str[i]))
            {
                curr_num = curr_num * 10 + str[i] - '0';
            }
            else
            {
                //不是数字，一定是字母
                result.push_back(make_pair(str[i], curr_num));
                //重置，准备下一轮计数
            	curr_num = 0;
            }
	        //for---
        }
        return result;
	    //getPair
    }

    Solution01(string&str_1, string&str_2)
    {
        //
        vector<pair<char, int>>char_vec_1 = getPair(str_1);
        vector<pair<char, int>>char_vec_2 = getPair(str_2);

        int total_size = 0;
        for (auto&item:char_vec_1)
        {
            total_size += item.second;
        }

        int diff = 0;//不同的字符

        int exec_i = 0; //待比较的字符

        int index_1 = 0;
        int index_2 = 0;

        int count_1 = 0;
        int count_2 = 0;

        int char_size_1 = char_vec_1.size();
        int char_size_2 = char_vec_2.size();

        while (index_1<char_size_1 && index_2<char_size_2)
        {
            char char_1 = char_vec_1[index_1].first;
            char char_2 = char_vec_2[index_2].first;

            count_1 += char_vec_1[index_1].second;
            count_2 += char_vec_2[index_2].second;
            char_vec_1[index_1].second = 0;
            char_vec_2[index_2].second = 0;

            while (exec_i<count_1 && exec_i<count_2)
            {
                if (char_1 != char_2)
                    diff += 1;
                exec_i++;
            }

            if (exec_i==count_1)
            {
                index_1++;
            }
            if (exec_i==count_2)
            {
                index_2++;
            }
	        //while
        }
        
        cout << diff << '/' << total_size;
	    //Solution01
    }
    
};


int main()
{
    string str_1, str_2;
    cin >> str_1 >> str_2;
    Solution01 solu(str_1, str_2);

}

// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单

// 入门使用技巧: 
//   1. 使用解决方案资源管理器窗口添加/管理文件
//   2. 使用团队资源管理器窗口连接到源代码管理
//   3. 使用输出窗口查看生成输出和其他消息
//   4. 使用错误列表窗口查看错误
//   5. 转到“项目”>“添加新项”以创建新的代码文件，或转到“项目”>“添加现有项”以将现有代码文件添加到项目
//   6. 将来，若要再次打开此项目，请转到“文件”>“打开”>“项目”并选择 .sln 文件
